package com.mrogrape.gui;

import java.awt.Graphics;

/**
 * 标记一个动画绘制器的接口，用于{@link com.mrogrape.gui.Banner}类的动画绘制。
 * 
 * <p>
 * 接口的实现者应保证能够记忆上一次绘制的状态以便在下次被通知绘制时可以准确绘制当前帧。
 * 此外由于其调用者可能在任何时候将其移除，所以实现者应保证任何时候都不应该创建会持续
 * 运行的线程或者无法自动关闭的资源
 * 
 * @author Ice Spring
 * @version 1.0 u201211091442
 */
public interface AnimationPainter {

	/**
	 * 用于绘制当前帧的方法，此方法由{@link com.mrogrape.gui.Banner}类自动调用，
	 * 任何时候都不应该手动调用此方法来影响动画的绘制。
	 * 
	 * @param g 图形上下文
	 * @param x 绘制起点横坐标
	 * @param y 绘制起点纵坐标
	 * @param width 绘制区域的宽度
	 * @param height 绘制区域的高度
	 * @param isReset 是否初始化绘制，如果此标记为true，则应该初始化动画绘制，并在本次绘制中绘制第一帧动画。
	 * @param isKeep 是否保留绘制，如果此标记为true，则本次绘制不再绘制新的帧而是绘制上一帧。
	 */
	public void paintCurrentFrame(Graphics g, int x, int y, int width, int height, boolean isReset, boolean isKeep);
}
